﻿using System;
using System.Collections.Generic;

namespace Scommesse.Model
{
    [Serializable]
    public class Carrello : Scommessa
    {
        public Carrello(BetCard betCard)
        {
            Importo = 1;
            Puntate = new List<Quota>();
            ScommessaController = new ScommessaController(betCard, this);
        }

        public Carrello(ScommessaConfermata scommessaConfermata)
            : base(scommessaConfermata)
        {
        }

        public void AddPuntata(Quota quota)
        {
            if (!quota.GetEvento().Stato.Equals(StatoEvento.Scommettibile))
                throw new Exception("non è più possibile scommettere sull'evento");
            if (Puntate.Contains(quota))
                Puntate.Remove(quota);
            Puntate.Add(quota);
        }

        public void RemovePuntata(Quota quota)
        {
            Puntate.Remove(quota);
        }

        public override bool Controllabile()
        {
            // se c'è almeno una puntata e l'importo è di almeno 1€ e se la vincita totale non supera i 10000€ 
            return (Puntate.Count != 0 && Importo >= 1.0F && TotaleVincita <= 10000.0F);
        }

        public override void ControllaScommessa(ScommessaController controller)
        {
            controller.Scommessa = new ScommessaConfermata(this);
        }
    }
}